10 D$ = CHR$(4): SPEED= 255: NORMAL : TEXT : HOME : GOTO 5000
20 X = T *30:Y = X +29: REM SET X & Y FOR ONLY ONE ACCOUNT
30 PRINT : FLASH : HTAB 17: PRINT "WORKING": FOR I = X TO Y STEP 30: IF NOT A(I) THEN NEXT
40 L = 1 -2 *(Z = 8 AND I <421): REM DETERMINE IF DEBTS ARE ADDED OR SUBTRACTED
50 FOR J = 11 TO 22:A = A(I +J)
60 IF J -10 = A(903) AND A(I +23) < >A(903) THEN A = A(I +26): REM SET CURRENT MONTH TO MOST RECENT VALUE IF REQ'D
70 A(907 +J) = A: NEXT : REM MOVE MONTH'S VALUE INTO FIRST WORKING SPACE
80 FOR K = 1 TO 12:A(929 +K) = A(917 +A(905 +K)): NEXT : REM RESEQUENCE SO CURRENT MONTH IS LAST IN ORDER
90 FOR J = 954 TO 965:A(J) = A(J) +A(J -24) *L: NEXT
100 N = 0:S2X = 0:SY = 0:S3 = 0:SX = 0:J = 0: FOR K = 1 TO 12:T = A(929 +K): IF T = 0 AND J = 0 THEN 120: REM BEGIN LINEAR REGRESSION. IF ZERO VALUE, DON'T START YET
110 J = 1:N = N +1:SX = SX +K:S2X = S2X +K *K:SY = SY +T:S3 = S3 +K *T
120 NEXT :A = N: IF N = 1 THEN AV = SY: FOR K = 942 TO 953:A(K) = SY: NEXT : GOTO 170: REM IF ONLY ONE ENTRY, PROJECTION EQUALS THAT ENTRY
130 IF SY = 0 THEN AV = 0: GOTO 170: REM ALL ZEROS IN ENTRY
3000 HOME : VTAB 2: PRINT "YOU CAN CORRECT OR UPDATE:": PRINT : GOSUB 9140
3010 PRINT "DO NOT UPDATE TO THE CURRENT MONTH": PRINT "BEFORE YOU HAVE UPDATED ALL PREVIOUS": PRINT "MONTHS REQUIRING UPDATE. FAILURE TO": PRINT "DO SO WILL COAUSE ERRORS IN PROJECTIONS.": PRINT
3020 GOSUB 9020
3030 PRINT : PRINT "ENTER THE NAME OF THE "B$".": INPUT NA$: PRINT : IF NA$ = "" THEN 7000
3040 FOR I = X/30 TO Y/30:T = 30 *I: IF N$(I) = NA$ THEN HOME : GOTO 3060
3050 NEXT : GOSUB 9130: GOSUB 9080: GOTO 3030
3060 PRINT : PRINT NA$" WAS LAST UPDATED "M$(A(T +23))" "A(T +24)", "A(T +25)" ": PRINT : PRINT "YEAR","MONTH","AMOUNT"
3070 VTAB 5:D = 0: FOR K = 1 TO 12: CALL -868: HTAB 1:NR = A(T +A(905 +K) +10): GOSUB 310: IF A(906) = 1 THEN YR = A(905): GOTO 3090
3080 YR = A(905) -1: IF D = 1 THEN YR = YR +1
3090 MO$ = M$(A(905 +K)): IF MO$ = "DEC" THEN D = 1
3100 CALL -868: PRINT YR,MO$" $";
3110 IF A(T +23) = A(903) THEN 3140
3120 TQ = A(903) -A(T +23): IF TQ <0 THEN TQ = TQ +12
3130 CALL -868: IF 12 -K -TQ <0 THEN INVERSE : PRINT "UPDATE REQD": NORMAL : GOTO 3150
3140 PRINT " "C$
3150 NEXT
3160 PRINT : PRINT "ENTER MONTH, COMMA, AMOUNT. EXAMPLE:": PRINT "MAR,1023.33 ENTER R TO RETURN TO": PRINT "UPDATE/CORRECT MENU.": PRINT
3170 POKE 34,17
3180 CALL -958: GET A$: PRINT A$;: IF A$ = "R" THEN POKE 34,0: GOSUB 9080: GOTO 3030
3190 IF A$ < >"A" AND A$ < >"D" AND A$ < >"F" AND A$ < >"J" AND A$ < >"M" AND A$ < >"N" AND A$ < >"O" AND A$ < >"S" THEN HTAB 1: CALL -868: GOTO 3180
3200 INPUT "";C$,Z$:C$ = A$ +C$:UD = 1
3210 FOR I = 1 TO 12: IF C$ = M$(I) THEN M = I: GOTO 3230
5150 PRINT : PRINT "DATA WAS RECORDED ON "M$(A(900))" "A(901)", "A(902)"."
5160 FOR I = 0 TO 870 STEP 30:J = I/30: IF NOT (A(I)) THEN 5180
5170 FOR N = I +1 TO I +A(I):N$(J) = N$(J) + CHR$(A(N)): NEXT : REM DEVELOP ACCOUNT NAMES
5180 NEXT
5190 PRINT : PRINT "ENTER TODAY'S DATE LIKE THIS: MMM,DD,YY EXAMPLE: DEC,4,81 ";
5200 INPUT NA$,A(904),A(905): IF A(905) <1000 THEN A(905) = A(905) +1900
5210 IF A(903) < >0 AND (A(905) <A(902) OR A(905) -A(902) >1) THEN PRINT CHR$(7);: GOTO 5190
5220 FOR I = 1 TO 12: IF NA$ = M$(I) THEN A(903) = I: GOTO 5240: REM CHECK FOR VALID MONTH
5230 NEXT : GOSUB 9130: GOTO 5190
5240 M = A(903) +1: FOR I = 906 TO 917: IF M = 13 THEN M = 1
5250 A(I) = M:M = M +1: NEXT : REM SET UP MONTHS FILE
5260 GOSUB 6000: GOTO 7000
5500 A(900) = A(903):A(901) = A(904):A(902) = A(905): HOME : PRINT " SAVE DATA TO TAPE (T) OR TO DISK (D)? ";: GET Z$: PRINT Z$: PRINT : IF Z$ = "T" THEN 5560
5510 IF Z$ < >"D" THEN 7000
5520 PRINT : PRINT "DATA NOW BEING WRITTEN TO DISK"